@怪人
2年前 提問
1個回答
軟件安全的軟件行為的捕獲實現方法有哪些
趣能一姐
2年前
軟件安全的軟件行為的捕獲實現方法有以下這些:
DLL代理方式:該方法通過為原來的DLL創建一個代理來實現對API調用的截獲。代理DLL中包含了與原動態鏈接庫中相同的輸出函數表,對于需要截獲的函數,需要在代理DLL中該函數的位置上替換新的函數以完成附加功能。
DLL注入方式:Windows提供了這種機制,因為DLL是和使用它的.EXE文件在同一個地址空間,為了實現一個DLL能被目標.EXE文件載入,就需要DLL注入技術,有SetWindowsHookEx和CreateRemoteThread兩種方法。
在系統調用中加入補丁:在目標應用程序中欲截獲的API函數處添加定位代碼(補丁),將調用轉到新的位置。此方法需要反匯編技術的支持。
修改輸入地址表:IAT中保存可執行代碼所調用的輸入函數相對于文件的偏移地址。該方法借助于Windows IAT的重定位機制來實現API函數的調用截獲。
修改API函數:實現這種機制有兩種方法:一是利用斷點中斷指令(INT 3)對目標API函數設置斷點,同時將截獲代碼作為調試代碼;另一種是利用CPU的轉移控制指令替換目標API函數的第一個字節,如CALL或JMP等。
利用Detours:微軟開發的Detours庫的主要功能是攔截x86機器上的任意Win32二進制函數(API Hook)、編輯二進制文件的輸入表,以及向二進制文件添加任意數據段。借助于Detours可以輕易地實現API Hook的功能。